import asyncio
import json
import time

import aiohttp

# base_url = "http://customer-service-server-prod.dsjyyb-dev:8888"
base_url = "http://localhost:8888"


async def post_request(endpoint, data):
    async with aiohttp.ClientSession() as session:
        start_time = time.time()
        async with session.post(f"{base_url}{endpoint}",
                                json=data) as response:
            first_response_time = time.time() - start_time
            # 使用 aiohttp 的流式响应
            async for line in response.content:
                if line:
                    # 解码并去除空白字符
                    text = line.decode('utf-8').strip()
                    if text:
                        yield text, first_response_time


async def main(data):
    endpoint = "/questionnaire_chat"
    request_data = {
        'userId': data.get('user_id'),
        'dialogId': data.get('dialog_id'),
        'messageId': data.get('message_id'),
        'message': data.get('message'),
        'userTagAnalysis': data.get('user_tag_analysis'),
        'topElements': data.get('top_elements'),
        'questions': data.get('questions'),
        'history': data.get('history'),
        'version': 'v1'
    }

    # 修改为收集所有流式响应
    response_chunks = []
    async for chunk, response_time in post_request(endpoint, request_data):
        response_chunks.append((chunk, response_time))
    return response_chunks


if __name__ == "__main__":

    data = {
        "userTagAnalysis":
        "##### 分析\n\n该用户为广东省深圳市的移动客户，性别信息缺失，但根据其行为模式，可以推测其为高价值用户，且居住在市区。用户近期没有投诉记录，表明客户投诉感知良好。用户近3个月内拨打过10086热线，说明对客服热线有一定的依赖，10086客服热线体验对其较为重要。用户近3个月内登录过中国移动APP三次以上，表明电子渠道体验对其业务使用有重要影响。\n\n用户是5G终端用户，且订购了流量包，表明对手机上网质量有较高要求，手机上网活跃度高。用户没有家庭宽带报装或报修记录，但使用的是1000M家庭宽带，说明家宽上网质量对其同样重要。用户没有语音通话超套记录，但语音通话活跃度未知，故语音通话质量的业务重要度需进一步观察。\n\n用户不是高校/职青用户、银发用户或K12用户，这些标签对业务重要度影响较小。用户年龄在50至80岁之间，但未标记为银发用户，可能是因为其活跃的互联网使用行为。用户不是移动会员，但高价值用户的身份意味着对服务质量和体验有较高期望。\n\n综合来看，该用户对手机上网质量和家宽上网质量有较高要求，10086客服热线体验和电子渠道体验对其也较为重要。由于用户是高价值用户，因此在服务质量和体验方面需要给予更多关注。",
        "topElements":
        "#### 排序\n\n根据上述分析，业务重要度前5的业务及它们的排序如下：\n\n1. 手机上网质量（用户是5G终端用户，订购了流量包，手机上网活跃度高，对手机上网质量有较高要求）\n2. 家宽上网质量（用户使用的是1000M家庭宽带，家宽上网质量对其同样重要）\n3. 10086客服热线体验（用户近3个月内拨打过10086热线，对客服热线有一定的依赖，体验对其较为重要）\n4. 电子渠道体验（中国移动APP或公众号）（用户近3个月内登录过中国移动APP三次以上，电子渠道体验对其业务使用有重要影响）\n5. 语音通话质量（虽然没有直接信息表明用户对语音通话的活跃度，但作为高价值用户，对服务质量和体验有较高期望，故将其排在第五位）\n\n以上排序考虑了用户的行为模式、业务使用频率以及对服务质量和体验的期望，反映了该用户对各项业务的重要度感知。",
        "questions":
        "##### 五个问题\n\n根据排序，提出业务重要性前5的问题：\n\n1. 您觉得我们移动的手机上网质量如何，是否满足您的日常使用需求？\n2. 您对我们提供的1000M家庭宽带上网质量有什么看法？\n3. 您拨打我们10086客服热线时，感觉服务响应速度和解决问题的效率如何？\n4. 您使用中国移动APP时，觉得界面设计和操作流程是否便捷？\n5. 您觉得我们的语音通话质量怎么样，通话过程中是否清晰无干扰？\n\n#### 首个问题\n\n您觉得我们移动的手机上网质量如何，是否满足您的日常使用需求？",
        "messageId":
        "57b76de446464419823fadd4ff4dfbc3",
        "history": [
            {
                "role": "assistant",
                "content": "您觉得我们移动的手机上网质量如何，是否满足您的日常使用需求？",
            },
            {
                "role": "user",
                "content": "还可以",
            },
            {
                "role": "assistant",
                "content": "感谢您的反馈！您在使用过程中遇到过什么问题或不便吗？",
            },
            {
                "role": "user",
                "content": "没有",
            },
            {
                "role": "user",
                "content": "那太好了！接下来想了解一下您对我们提供的1000M家庭宽带上网质量有什么看法？",
            },
        ],
        "dialogId":
        "4d8264f64a4b44dd8a86585a795cf118",
        "message":
        "没有",
        "userId":
        "3281833",
    }
    data = {
        'user_id':
        '3281833',
        'dialog_id':
        '4d8264f64a4b44dd8a86585a795cf118',
        'message_id':
        '57b76de446464419823fadd4ff4dfbc3',
        'message':
        '没有',
        'user_tag_analysis':
        '##### 分析\n\n该用户为广东省深圳市的移动客户，性别信息缺失，但根据其行为模式，可以推测其为高价值用户，且居住在市区。用户近期没有投诉记录，表明客户投诉感知良好。用户...体验对其也较为重要。由于用户是高价值用户，因此在服务质量和体验方面需要给予更多关注。',
        'top_elements':
        '#### 排序\n\n根据上述分析，业务重要度前5的业务及它们的排序如下：\n\n1. 手机上网质量（用户是5G终端用户，订购了流量包，手机上网活跃度高，对手机上网质量有较高要求...为模式、业务使用频率以及对服务质量和体验的期望，反映了该用户对各项业务的重要度感知。',
        'questions':
        '##### 五个问题\n\n根据排序，提出业务重要性前5的问题：\n\n1. 您觉得我们移动的手机上网质量如何，是否满足您的日常使用需求？\n2. 您对我们提供的1000M家庭宽带...\n#### 首个问题\n\n您觉得我们移动的手机上网质量如何，是否满足您的日常使用需求？',
        'history': [{
            "role": "assistant",
            "content": "问题1"
        }, {
            "role": "user",
            "content": "回答1"
        }],
        'created_at':
        '2025-03-19 08:40:24'
    }
    # json_data = json.loads(data)
    # 运行异步函数并获取结果
    result = asyncio.run(main(data))
    # 处理结果
    for chunk, response_time in result:
        print(f"Chunk: {chunk}, Time: {response_time}")
